package a_direct;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.MessageProperties;
import org.junit.Test;
import utils.RabbitMQUtils;



/**
 * 消息的生产者
 */
public class Producer {

    @Test
    public void sendMessage() throws Exception {
        //获取连接
        Connection connection = RabbitMQUtils.getConnection();
        //创建一个通道
        Channel channel = connection.createChannel();
        /**
         * 绑定队列
         * 参数1:队列名，如果发送消息时，队列在mq里面不存在，它会创建一个新的队列
         * 参数2:是否持久化如果为False,当MQ重启时，消息会丢失
         * 参数3:是否独享，true代表只有当前的connection可以访问到这个队列
         * 参数4:是否自动删除,是否用完之后就删这个队列
         * 参数5:其它参数
         */
        channel.queueDeclare("hello",true,false,false,null);
        /**
         * 发送消息
         * 参数 1 交换机名称 暂时用不到
         * 参数 2 队列名
         * 参数 3 基础参数 是否持久：MessageProperties.PERSISTENT_TEXT_PLAIN
         * 参数 4 消息的内容
         */
        channel.basicPublish("","hello", MessageProperties.PERSISTENT_TEXT_PLAIN,"hello rabbitmq".getBytes());
        //关闭通道和连接
        RabbitMQUtils.closeChannelAndConnection(channel,connection);
        System.out.println("消息发送成功");
    }
}
